package com.atguigu.ai.function.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Description;

import java.util.function.Function;

@Configuration
public class CalculatorService {
    public record AddOperation(int a, int b) {

    }

    public record MulOperation(int m, int n) {

    }

    //注册
    @Bean
    @Description("加法运算")
    //@Description 是 Java 中常用的注解，用于为类、方法、字段等元素添加描述性说明，主要起到文档注释的作用，方便开发者理解代码功能，
    // 同时也能被 IDE 或文档生成工具（如 Javadoc）识别和展示。
    // 定义一个返回Function类型的方法
    //Function 接口：这是 Java 8 引入的函数式接口，包含一个apply()方法，接收一个输入参数并返回一个结果，
    // 格式为Function<T, R>（T 是输入类型，R 是返回类型）
    public Function<AddOperation,Integer> addOperation() {
         // 返回一个Lambda表达式作为Function的实现
        return request -> {
            // 实现加法逻辑：返回两个数的和
            return request.a + request.b;
        };
    }

    @Bean
    @Description("乘法运算")
    public Function<MulOperation,Integer> mulOperation() {
        return request -> {
            return request.m * request.n;
        };
    }
}
